package com.itheima.edu.info.manager.service;

import com.itheima.edu.info.manager.dao.BaseStudentDao;
import com.itheima.edu.info.manager.dao.OtherStudentDao;
import com.itheima.edu.info.manager.dao.StudentDao;
import com.itheima.edu.info.manager.domain.Student;
import com.itheima.edu.info.manager.factory.StudentDaoFactory;

/**
 * service 业务员,业务的逻辑处理
 */
public class StudentService {
    //1.创建studentDao库管
  //  private OtherStudentDao studentDao = new OtherStudentDao();
    //通过学生数据工厂获得学生数据
 private BaseStudentDao studentDao = StudentDaoFactory.getStudentDao();
    /**
     * 添加学生方法
     * @param stu
     * @return
     */
    public boolean addStudent(Student stu) {

        //2.将学生对象传递给StudentDao库管中的addStudent方法
        //3.将返回的boolean类型结果返还给StudentController
        return studentDao.addStudent(stu);
    }

    /**
     * 判断学生是否存在方法
     * @param id
     * @return
     */
    public boolean isExists(String id) {

        Student[] stus = studentDao.findAllStudent();
        //假设ID在数组中不存在
        boolean exists = false;
        //遍历数组,获取每一个学生对象,准备进行判断
        for (int i = 0; i < stus.length; i++) {
            Student student = stus[i] ;
            if (student != null && student.getId().equals(id)){
                exists = true;
                break;
            }
        }
        return exists;
    }

    /**
     * 查看学生方法
     * @return
     */
    public Student[] findAllStudent() {
        //1.调用库管对象的findAllStudent获取学生对象数组
        Student[] allStudent = studentDao.findAllStudent();
        //2.判断数组中是否有学生信息(有的话,返回学生信息,没有的话返回null)
        //思路:数组中只要存在一个不是null的元素,就代表数组中有学生信息
        boolean flag = false;
        for (int i = 0; i < allStudent.length; i++) {
            Student stu = allStudent[i];
            if (stu != null){
                flag = true;
                break;
            }
        }
        if (flag ){
            //有信息
            return allStudent;
        }else {
            return null;
        }
    }

    /**
     * 删除学生方法
     * @param delId
     */
    public void deleteStudentById(String delId) {
        studentDao.deleteStudentById(delId);
    }

    /**
     * 修改下学生方法
     * @param updateId
     * @param newStu
     */
    public void updateStudent(String updateId, Student newStu) {
        studentDao.updateStudent(updateId,newStu);
    }
}
